14 research outputs found
Programming and Proving with Distributed Protocols
Distributed systems play a crucial role in modern infrastructure, but are notoriously difficult to
implement correctly. This difficulty arises from two main challenges: (a) correctly implementing
core system components (e.g., two-phase commit), so all their internal invariants hold, and (b)
correctly composing standalone system components into functioning trustworthy applications (e.g.,
persistent storage built on top of a two-phase commit instance). Recent work has developed several
approaches for addressing (a) by means of mechanically verifying implementations of core distributed
components, but no methodology exists to address (b) by composing such verified components into
larger verified applications. As a result, expensive verification efforts for key system components are
not easily reusable, which hinders further verification efforts.
In this paper, we present Disel, the first framework for implementation and compositional
verification of distributed systems and their clients, all within the mechanized, foundational context
of the Coq proof assistant. In Disel, users implement distributed systems using a domain specific
language shallowly embedded in Coq and providing both high-level programming constructs as well
as low-level communication primitives. Components of composite systems are specified in Disel as
protocols, which capture system-specific logic and disentangle system definitions from implementation
details. By virtue of Disel’s dependent type system, well-typed implementations always satisfy
their protocols’ invariants and never go wrong, allowing users to verify system implementations
interactively using Disel’s Hoare-style program logic, which extends state-of-the-art techniques for
concurrency verification to the distributed setting. By virtue of the substitution principle and frame
rule provided by Disel’s logic, system components can be composed leading to modular, reusable
verified distributed systems.
We describe Disel, illustrate its use with a series of examples, outline its logic and metatheory,
and report on our experience using it as a framework for implementing, specifying, and verifying
distributed systems
Quality of life assessment in companion animals: what, why, who, when and how
Quality of life is a commonly used phrase in veterinary medicine. It describes a complex evaluation that may be difficult for animals to perform, and the phrase “happiness” may be a more crude but useful approximation. Quality of life assessments should ideally be an integral part of our decision making, and should encompass evaluation of aspects of a pet’s life beyond just its health. Assessments should aim both to evaluate an animal’s quality of life, and to look for ways in which it might be improved. This article will discuss the challenges of assessing quality of life in companion animals, and will review the range of different methods available for assessment of quality of life in cats and dogs
Icing: Supporting Fast-Math Style Optimizations in a Verified Compiler
Verified compilers like CompCert and CakeML offer increasingly sophisticated optimizations. However, their deterministic source semantics and strict IEEE 754 compliance prevent the verification of ``fast-math'' style floating-point optimizations. Developers often selectively use these optimizations in mainstream compilers like GCC and LLVM to improve the performance of computations over noisy inputs or for heuristics by allowing the compiler to perform intuitive but IEEE 754-unsound rewrites
Processing and microstructure characterisation of oxide dispersion strengthened Fe-14Cr-0.4Ti-0.25Y(2)O(3) ferritic steels fabricated by spark plasma sintering
Ferritic steels strengthened with Ti-Y-O nanoclusters are leading candidates for fission and fusion reactor components. A Fe-14Cr-0.4Ti + 0.25Y2O3 (14YT) alloy was fabricated by mechanical alloying and subsequently consolidated by spark plasma sintering (SPS). The densification of the 14YT alloys significantly improved with an increase in the sintering temperature. Scanning electron microscopy and electron backscatter diffraction revealed that 14YT SPS-sintered at 1150 °C under 50 MPa for 5 min had a high density (99.6%), a random grain orientation and a bimodal grain size distribution (<500 nm and 1-20 μm). Synchrotron X-ray diffraction patterns showed bcc ferrite, Y2Ti2O7, FeO, and chromium carbides, while transmission electron microscopy and atom probe tomography showed uniformly dispersed Y2Ti2O7 nanoclusters of <5 nm diameter and number density of 1.04 × 1023 m-3. Due to the very much shorter consolidation times and lower pressures used in SPS compared with the more usual hot isostatic pressing routes, SPS is shown to be a cost-effective technique for oxide dispersion strengthened (ODS) alloy manufacturing with microstructural features consistent with the best-performing ODS alloys